1 REM ********************************* 2 REM * * 3 REM * FILE SCOUT V0619/85 * 4 REM * (RV 0316/84) * 5 REM * * 6 REM ********************************* 7 REM 10 POKE 53280,12:POKE 53281,0 :PRINT CHR$(147)CHR$(154); 16 H$="0123456789ABCDEF" 20 GOTO 1000 50 REM LOCATE 51 POKE 214,RW:POKE 211,CL:SYS 58640:RETURN 60 REM SET ROW, COLUMNS FOR SCAN 61 DIM RW(35),CL(35) 62 FOR I=0 TO 16:RW(I)=I+6:CL(I)=4:NEXT I 63 FOR I=17 TO 34:RW(I)=(I+6)-17:CL(I)=19:NEXT I 65 RETURN 99 : 100 REM ** COLLECT ALL THE ACTIVE FILES AND THEIR FIRST TRACK & SECTORS ** 101 RW=5:CL=6 :GOSUB 50:PRINT "READING DIRECTORY"; 105 OPEN 15,8,15,"U;" 110 N1=144:DIM F$(N1),T(N1),S(N1),B(N1),FT$(N1) 115 OPEN 2,8,2,"#2" 120 TD=18:TS=1:NF=0 130 PRINT#15,"U1:2,8,"TD,TS 140 GET#2,A$:TD=ASC(A$+CHR$(0)):GET#2,A$:TS=ASC(A$+CHR$(0)) 145 FOR K=0 TO 7 150 GET#2,A$:IF ASC(A$+CHR$(0))=0 THEN GOSUB 300:GOTO 230 151 A=ASC(A$):IF (A AND 64)=0 THEN FT$(NF)="[160]":GOTO 153 152 FT$(NF)=">" 153 A=(A AND(255-64)) 155 IF A=129 THEN FT$(NF)=FT$(NF)+"SEQ" 156 IF A=130 THEN FT$(NF)=FT$(NF)+"PRG" 157 IF A=131 THEN FT$(NF)=FT$(NF)+"USR" 160 GET#2,A$:GET#2,B$:T(NF)=ASC(A$+CHR$(0)):S(NF)=ASC(B$+CHR$(0)) 165 FOR J=0 TO 15:GET#2,A$ 170 IF A$=CHR$(160) THEN GOTO 190 180 F$(NF)=F$(NF)+A$ 190 NEXT J 199 : 200 FOR J=0 TO 8:GET#2,A$:NEXT J 210 GET#2,A$:GET#2,B$:B(NF)=ASC(A$+CHR$(0))+ASC(B$+CHR$(0))*256:BA=BA+B(NF) 224 NF=NF+1 225 GET#2,A$:GET#2,A$ 230 NEXT K 240 IF TD<>18 THEN GOTO 245 241 IF TS<1 OR TS>19 THEN GOTO 245 242 GOTO 130 245 IF NF=0 THEN PRINT"NO FILES":END 246 CLOSE2:BF=664-BA:RETURN 299 : 300 FOR J=0 TO 30 310 GET#2,A$:NEXTJ 320 RETURN 399 : 400 REM SCAN FOR T & S 405 RW=24:CL=1:GOSUB 50:PRINT BL$; 410 RW=23:CL=2:GOSUB 50:F$="":K1=-1:PRINT CHR$(158);:INPUT "FILE NAME";F$ 411 IF F$="" THEN RW=23:CL=1:PRINT BL$;:RETURN 412 LN=LEN(F$):IF RIGHT$(F$,1)="*" THEN LN=LEN(F$)-1:F$=LEFT$(F$,LN) 420 FOR K=0 TO NF 422 IF K1<>-1 THEN GOTO 430 425 IF F$=LEFT$(F$(K),LN) THEN K1=K 430 NEXT K 431 IFK1=-1THENPRINT " NOT FOUND";:FOR K=0TO2000:NEXTK:PRINTCHR$(154);:RETURN 435 TR=T(K1):SC=S(K1) 440 BC=0:C=0:T4$="TRK SEC" 445 PRINT#15,"I0:":CLOSE2: OPEN 2,8,2,"#2" 450 PRINT HD$;:RW=2:CL=1:GOSUB 50:PRINT F$(K1); 455 RW=4:CL=6:GOSUB 50:PRINT T4$; 460 RW=RW(C):CL=CL(C):GOSUB 50:PRINT BC;TR;SC 465 GOSUB 590:IF TR=0 THEN GOTO 480 470 BC=BC+1:C=C+1 475 IF C<34 THEN GOTO 460 480 RW=24:CL=10:GOSUB 50:PRINT CHR$(5) "NEXT PRINT RETURN "; 482 GOSUB 700:PRINT A$CHR$(158); 490 IF A$="N" AND BC"PRG" THEN LA(I)=-1:GOTO 650 630 PRINT#15,"U1:2,8,"T(I),S(I) 632 PRINT#15,"B-P:"2,0 635 GET#2,A$:GET#2,A$:GET#2,A$:GET#2,B$ 636 A=ASC(A$+CHR$(0)):B=ASC(B$+CHR$(0)) 640 LA(I)=A +B*256 641 BH=INT(B/16):BL=B-(BH*16) 642 AH=INT(A/16):AL=A-(AH*16) 643 LH$(I)=MID$(H$,BH+1,1)+MID$(H$,BL+1,1) 644 LH$(I)="$"+LH$(I)+MID$(H$,AH+1,1)+MID$(H$,AL+1,1) 650 NEXT I 655 CLOSE 2:RETURN 699 : 700 REM GET CHAR FROM KB, WITH CURSOR 705 POKE 198,0:POKE 204,0 710 GET A$:POKE 207,0:IF A$="" THEN GOTO 710 715 POKE 204,1:PRINT " "CHR$(157);:RETURN 725 CLOSE15:OPEN 15,8,15,"I0:" 730 INPUT#15,A$,B$,C$,D$:CLOSE15 735 IF A$="00" THEN RETURN 740 PRINT:PRINT:PRINT"DISK ERROR":STOP 749 : 750 REM GET DISK NAME & ID 760 OPEN 15,8,15,"U;" 770 OPEN 2,8,2,"#2" 775 TD=18:TS=0:PRINT#15,"U1:2,8,"TD,TS 780 PRINT#15,"M-R"CHR$(144)CHR$(5)CHR$(20) 782 FOR I=0 TO 19:GET#15,A$:DN$=DN$+A$:NEXT I 795 CLOSE2:CLOSE15:RETURN 799 : 800 T1$=DN$+NF$ 801 T2$="BLOCKS ALLOC:[160]"+STR$(BA)+" BLOCKS FREE: "+STR$(BF)+" " 802 T3$="FILE TYPE TRK SEC BLK ADDR.D ADDR.H":S1$=" " 805 OPEN 4,4:CMD 4 808 PRINT S1$T1$:PRINT S1$T2$:PRINT:PRINT S1$T3$:PRINT 810 FOR K=0 TO NF-1 820 PRINT S1$F$(K);:FOR J=0TO16-LEN(F$(K)):PRINT" ";:NEXT J:PRINT FT$(K); 829 SP$=" " 830 A$=STR$(T(K)):A$=A$+RIGHT$(SP$,3-LEN(A$)) 831 B$=STR$(S(K)):B$=B$+RIGHT$(SP$,3-LEN(B$)) 832 C$=STR$(B(K)):C$=C$+RIGHT$(SP$,4-LEN(C$)) 840 PRINT A$SPC(1)B$SPC(1)C$SPC(1);:IF LA(K)<0 THEN PRINT SP$;:GOTO 845 841 D$=STR$(LA(K)):D$=D$+RIGHT$(SP$,6-LEN(D$)):PRINT D$SPC(1) 845 PRINT LH$(K) 850 NEXT K 860 PRINT#4,CHR$(13):PRINT#4:CLOSE4:RETURN 899 : 1000 REM ** MAIN ROUTINE ** 1001 R0$=CHR$(146):R9$=CHR$(18):CL$=CHR$(147) 1002 BL$=" " 1003 HD$=CL$+R9$+" FILE SCOUT V0619/85 "+R0$ 1004 PRINT HD$;:GOSUB 60 1005 RW=3:CL=1:GOSUB 50:PRINT "INSERT DISK AND HIT A KEY "; 1006 GOSUB 700:GOSUB 725:GOSUB 750 1010 GOSUB 100:GOSUB 600 1015 PRINT 1400 NF$=STR$(NF):L=LEN(NF$) 1401 FL$=RIGHT$(BL$,9-L) 1405 NF$= " # FILES : "+NF$+FL$ 1410 TH$=CL$+R9$+DN$+NF$ 1501 SP$=" ":L=LEN(STR$(BA))+LEN(STR$(BF)):FL$=RIGHT$(SP$,14-L) 1502 TJ$=R9$+"BLOCKS ALLOC:"+STR$(BA)+" BLOCKS FREE:"+STR$(BF)+FL$ 1503 TL$=R9$+"FILE TYPE TRK SEC BLK ADDR "+R0$:I=0 1505 PRINT TH$;:PRINT TJ$:PRINT TL$:PRINT 1520 PRINT F$(I);:FOR J=0TO16-LEN(F$(I)):PRINT" ";:NEXT J:PRINT FT$(I); 1529 SP$=" " 1530 A$=STR$(T(I)):A$=A$+RIGHT$(SP$,3-LEN(A$)) 1531 B$=STR$(S(I)):B$=B$+RIGHT$(SP$,3-LEN(B$)) 1532 C$=STR$(B(I)):C$=C$+RIGHT$(SP$,4-LEN(C$)) 1540 PRINT A$SPC(1)B$SPC(1)C$;:IF LA(I)<0 THEN GOTO 1545 1541 PRINT STR$(LA(I)) 1545 PRINT SPC(34)LH$(I) 1546 I=I+1:IF I=NF THEN GOTO 1548 1547 IF I/8-INT(I/8)<>0 THEN GOTO 1520 1548 RW=24:CL=5:GOSUB 50:PRINT CHR$(5)" NEXT SCOUT PRINT BOOT QUIT?[160]"; 1549 GOSUB 700:PRINT A$;:PRINT CHR$(154); 1550 IF A$="P" THEN GOSUB 800:PRINT CHR$(20);:GOTO 1548 1555 IF A$="S" THEN GOSUB 400:GOTO 1580 1560 IF A$="Q" THEN STOP 1565 IF A$="B" THEN CLR:GOTO 10 1570 IF A$<>"N" THEN GOTO 1548 1575 IF I